package com.iman.sumer.web.space;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.iman.common.Constants;
import com.iman.common.support.Page;
import com.iman.sumer.service.student.CourseService;
import com.iman.sumer.util.LinkMessages;
import com.iman.sumer.vo.StudyCourseVo;
import com.iman.sumer.web.BaseController;

/**
 * 职业规划
 */
@Controller
@RequestMapping(value = "/sumer/course/*")
public class CourseController extends BaseController {
	 
	@Autowired
	private CourseService courseService;

	/**
	 * 
	 *  Function:
	 *  功能说明：   初始查询页面
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2014年12月18日 上午12:01:51
	 *	返回类型: ModelAndView    
	 *  @param request
	 *  @return
	 */
	@RequestMapping(value = "/init")
	public ModelAndView init(HttpServletRequest request, @Valid @PathVariable Long showId) throws Exception {
		return initCourse(request, "0", "9","");
	}

	@RequestMapping(value = "/init/{showId}")
	public ModelAndView init(HttpServletRequest request , @Valid @PathVariable String showId) throws Exception {
		Long userId = null;
		if(NumberUtils.isNumber( showId)){
			userId = NumberUtils.toLong(showId);
		}
		return initCourse(request, "0", "9",userId);
	}
	
	
	
	
	/**
	 * 
	 *  Function:
	 *  功能说明： 指定显示  有showId 人员的 数据
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2015年5月25日 下午10:12:24
	 *	返回类型: ModelAndView    
	 *  @param request
	 *  @param pageNo
	 *  @param pageSize
	 *  @param showId
	 *  @return
	 *  @throws Exception
	 */
	@RequestMapping(value = "/initCourse/{pageNo}/{pageSize}/{showId}")
	public ModelAndView initCourse(HttpServletRequest request, @Valid @PathVariable String pageNo,
			@Valid @PathVariable String pageSize  ,	 @Valid @PathVariable  String showId) throws Exception {
		Long userId = null;
		if(NumberUtils.isNumber( showId) && NumberUtils.toLong(  showId) >10){
			userId = NumberUtils.toLong(showId);
		}
		
		return this.initCourse(request, pageNo, pageSize, userId);
	}
	
	
	
	
	/**
	 * 
	 *  Function:
	 *  功能说明：    showId 如果有内容 显示  输入内容ID的 数据，如果没有显示自己的
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2015年5月25日 下午10:12:56
	 *	返回类型: ModelAndView    
	 *  @param request
	 *  @param pageNo
	 *  @param pageSize
	 *  @param showId
	 *  @return
	 *  @throws Exception
	 */
	@RequestMapping(value = "/initCourse/{pageNo}/{pageSize}")
	public ModelAndView initCourse(HttpServletRequest request, @Valid @PathVariable String pageNo,
			@Valid @PathVariable String pageSize  ,Long showId) throws Exception {
		if (!StringUtils.isNumeric(pageNo)) {
			throw new IllegalArgumentException("无效分页参数");
		}
		if (!StringUtils.isNumeric(pageSize)) {
			throw new IllegalArgumentException("无效分页参数");
		}

		// 课程列表
		Map<String, Object> mapDmsg = new HashMap<String, Object>();
		mapDmsg.put(Constants.PAGE_INDEX_KEY, Integer.parseInt(pageNo));
		mapDmsg.put(Constants.PAGE_SIZE_KEY, Integer.parseInt(pageSize));
		
		showId = showId==null?this.getUserIdInSession(request):showId ;
	 
		//如果有 showID  显示 指定人员的ID ，如果没有显示自己的数据
		mapDmsg.put("userId", showId );

		Page<StudyCourseVo> pageData = courseService.getStudyingCourseList(mapDmsg);
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("pageData", pageData);

		ModelAndView view = new ModelAndView("space/course", model);
		view.addObject("ImageServer", LinkMessages.getString("SHOW_IMG_URL"));
		view.addObject(Constants.COURSE_TOPIC_URL, LinkMessages.getString(Constants.COURSE_TOPIC_URL));
		view.addObject(Constants.COURSE_PUBLIC_URL, LinkMessages.getString(Constants.COURSE_PUBLIC_URL));
		view.addObject(Constants.COURSE_PRIVATE_URL, LinkMessages.getString(Constants.COURSE_PRIVATE_URL));

		//  加入 给前台 是否是自己的数据 ，和  传递 showId 
		boolean isme = super.isMeData(request, showId);
		super.putShowId(view, showId, isme);
		
		// 每个做后都要加上这个
		putResourceSrc(view ,request );
		// 点击tab颜色
		view.addObject("tabstatus", "course");
		return view;
	}
	
	
	
	
	
	
	
	
	
	/**
	 * 提供进入空间主页 中显示自己学习的课程内容
	 * @param request
	 * @param showId
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/mainCourse/{showId}")
	@ResponseBody
	public Map mainCourse(HttpServletRequest request, @Valid @PathVariable String showId) throws Exception {
		 
		// 课程列表
		Map<String, Object> mapDmsg = new HashMap<String, Object>();
		mapDmsg.put(Constants.PAGE_INDEX_KEY, 0 );
		mapDmsg.put(Constants.PAGE_SIZE_KEY,  2 );
		
		//如果有 showID  显示 指定人员的ID ，如果没有显示自己的数据
		mapDmsg.put("userId",  showId  );
		
		
		Page<StudyCourseVo> pageData = courseService.getStudyingCourseList(mapDmsg);
		 
		Map result = new HashMap ();
		List<Map> data = new ArrayList<Map>();
		
		for(StudyCourseVo vo :pageData.getData()){
			Map content = new HashMap();
			content.put("link", "http://www.zhuclass.com/course/detail/"+vo.getCourseId() );
			content.put("title", vo.getCourseNm());
			content.put("imgLink", "http://resource.zhuclass.com/cdrmimg/"+vo.getCoursePimg()+"?w=240&h=170");
			data.add(content);
		}
		 
		result.put("content", data);
		result.put("morelink", "http://space.zhuclass.com/sumer/course/init/");
		
		return result;
	}
	
	
	
	
	

}
